function bubbleSort(arr) {
  const n = arr.length;
  for (let i = 0; i < n - 1; i++) {
    let swapped = false; // 用来判断是否有交换发生
    // 从 0 到 n-i-1 遍历，每趟遍历都会把最大元素移动到末尾
    for (let j = 0; j < n - i - 1; j++) {
      if (arr[j] > arr[j + 1]) {
        // 交换
        let temp = arr[j];
        arr[j] = arr[j + 1];
        arr[j + 1] = temp;
        swapped = true; // 如果发生了交换，标记为 true
      }
    }
    // 如果没有发生交换，说明数组已经是有序的，直接退出循环
    if (!swapped) {
      break;
    }
  }
  return arr;
}

// 测试
const arr = [5, 2, 9, 1, 5, 6];
console.log(bubbleSort(arr)); // 输出: [1, 2, 5, 5, 6, 9]
